home *** CD-ROM | disk | FTP | other *** search
/ The Learning Curve / The Learning Curve (Weird Science, 1996).iso / geography / drawmap / drawmap.h < prev    next >
C/C++ Source or Header  |  1989-09-24  |  9KB  |  234 lines

  1. /*  File drawmap.h  */
  2.  
  3. #define MAX(a,b) ((a)>=(b) ? (a) : (b))
  4. #define ABS(a) ((a)>=0 ? (a) : (-(a)))
  5.  
  6. #define BITVAL(x,n)  ((x>>n)&1)
  7. #define BITSETT(x,n)  (x | bitval[n])
  8. #define BITCLEAR(x,n)  (x & (~bitval[n]))
  9. #define BITSTORE(x,n,val)  ((val==0) ? (x=BITCLEAR(x,n)) : (x=BITSETT(x,n)))
  10.  
  11. #define SHADOW_DISP  4                 /* shadow displacement (pix) */
  12.  
  13. #define WC WINDOWCLOSE
  14. #define WDP WINDOWDEPTH
  15.  
  16. #define NORMALFLAGS (WC | WDP)
  17.  
  18. #define IDCMPFLAGS (CLOSEWINDOW | MOUSEBUTTONS)
  19.  
  20. #define WWIDTH 640                     /* window width (pixels)       */
  21. #define WHEIGHT 400                    /* window height (pixels)      */
  22. #define VMODE (HIRES | LACE)           /* view mode                   */
  23. #define DEPTH 2                        /* 4 colors => 2 bitplanes     */
  24.  
  25. #define CENTERX WWIDTH/2               /* place origin at center of   */
  26. #define CENTERY (WHEIGHT-10)/2         /*   window                    */
  27. #define NUMPTS 2100                    /* max. no. points per area    */
  28. #define MAXVAL 17718                   /* number of words in map      */
  29. #define MAXTIDY 380                    /* number of words in map-tidy */
  30. #define HFACTOR (WWIDTH/360.)          /* horizontal scale (pix/deg)  */
  31. #define VFACTOR ((WHEIGHT-10.)/180.)   /* vertical scale (pix/deg)    */
  32. #define M_VFACTOR ((WHEIGHT-10.)/4.87) /* vertical scale for Mercator */
  33.                                        /*   map (+/- 80 degrees lat.) */
  34. #define ASP_RAT ((640./400.)*(188./260.)) /* screen aspect ratio      */
  35.                                        /*  (max width / max hgt)      */
  36. #define VRADIUS 160                    /* vertical radius of ellipse  */
  37.                                        /*   (pixels)                  */
  38. #define HRADIUS (short)(ASP_RAT * VRADIUS+0.5) /* horiz. radius (pix) */
  39.  
  40. #define FILL   1                       /* fill area outlines       */
  41. #define NOFILL 0                       /* don't fill area outlines */
  42.  
  43. #define OK     1                       /* result flags */
  44. #define NOT_OK 0
  45.  
  46. #define BLUE      0L                   /* workbench colors */
  47. #define WHITE     1L
  48. #define BLACK     2L
  49. #define ORANGE    3L
  50.  
  51. UWORD mapcolors[] = {
  52.    0x006b, 0x0fff, 0x0000, 0x0f90,     /* blue, white, black, orange */
  53.    0x0f90, 0x0fff, 0x0000, 0x006b,     /* orange, white, black, blue */
  54.    0x006b, 0x0fff, 0x0000, 0x0caf,     /* blue, white, black, violet */
  55.    0x0caf, 0x0fff, 0x0000, 0x006b,     /* violet, white, black, blue */
  56.    0x006b, 0x0fff, 0x0000, 0x00f0,     /* blue, white, black, green  */
  57.    0x00f0, 0x0fff, 0x0000, 0x006b,     /* green, white, black, blue  */
  58.    0x006b, 0x0fff, 0x0000, 0x0ff0,     /* blue, white, black, yellow */
  59.    0x0ff0, 0x0fff, 0x0000, 0x006b      /* yellow, white, black, blue */
  60. };
  61.  
  62. int num_colors = sizeof(mapcolors)/2;  /* number of colors in color table */
  63.  
  64. char mapname[]      = "map.bin";       /* names of files containing */
  65. char mapname_trig[] = "map-trig.bin";  /*   map data                */
  66. char tdname[]       = "map-tidy.bin";
  67. char tdname_trig[]  = "map-tidy-trig.bin";
  68.  
  69. #define GLOBE_FILL_MIN 5               /* min # points in area to be */
  70.                                        /*   color-filled on globe    */
  71.  
  72. #define RE 6378.165                    /* radius of Earth (kilometers) */
  73. #define VIEW_HEIGHT 300.               /* height above Earth to view   */
  74.                                        /*   globe (km)                 */
  75. #define MIN_HEIGHT 10.                 /* minimum view height (km)     */
  76.  
  77. double view_height, eta, etap, facp;   /* declare global constants */
  78.  
  79. double pi = 3.141592653589793;
  80. double rad, pi2, twopi;
  81.  
  82.                                        /* region numbers for lakes */
  83.  
  84. int lakes[] = { 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
  85.    145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156 };
  86.  
  87. int num_lakes = sizeof(lakes) / sizeof(int);
  88.  
  89. char fontname[] = "topaz.font";        /* screen font name */
  90.  
  91. struct TextAttr mapfont = {            /* screen font */
  92.    (STRPTR) &fontname, 8, 0, 0
  93. };
  94.  
  95. struct NewScreen mapscreen = {
  96.    0,                                  /* left edge of screen     */
  97.    0,                                  /* top edge of screen      */
  98.    WWIDTH, WHEIGHT,                    /* width, height of screen */
  99.    DEPTH,                              /* 4 colors                */
  100.    1, 0,                               /* detail pen, block pen   */
  101.    VMODE,                              /* view mode               */
  102.    CUSTOMSCREEN,                       /* type of screen          */
  103.    &mapfont,                           /* screen font             */
  104.    "Drawmap v. 2.0, by Bryan Brown",   /* screen title            */
  105.    NULL,
  106.    NULL
  107. };
  108.  
  109. struct NewWindow mapWindow = {
  110.    0,                                  /* LeftEdge for window measured
  111.                                           in pixels, at the current
  112.                                           horizontal resolution, from the
  113.                                           leftmost edge of the Screen   */
  114.    0,                                  /* TopEdge for window is measured
  115.                                           in lines from the top of the
  116.                                           current Screen.               */
  117.    WWIDTH, WHEIGHT,                    /* Width, Height of this window  */ 
  118.    0,                                  /* DetailPen - what pen number is
  119.                                           to be used to draw the borders
  120.                                           of the window                 */ 
  121.    1,                                  /* BlockPen - what pen number is
  122.                                           to be used to draw system
  123.                                           generated window gadgets      */
  124.                                        /* (for DetailPen and BlockPen,
  125.                                            the value of -1 says
  126.                                            "use the default value")     */
  127.    IDCMPFLAGS,                         /* IDCMP Flags                   */
  128.    SMART_REFRESH | ACTIVATE | NORMALFLAGS | GIMMEZEROZERO | RMBTRAP |
  129.       BORDERLESS | REPORTMOUSE,
  130.                                        /* Window Flags                  */
  131.    NULL,                               /* FirstGadget                   */
  132.    NULL,                               /* CheckMark                     */
  133.    "Drawmap v. 2.0, by Bryan Brown",   /* Window title                  */
  134.    NULL,                               /* Pointer to Screen if not
  135.                                           workbench                     */
  136.    NULL,                               /* Pointer to BitMap if a
  137.                                           SUPERBITMAP window            */
  138.    10, 10,                             /* minimum width, minimum height */
  139.    WWIDTH, WHEIGHT,                    /* maximum width, maximum height */
  140.    CUSTOMSCREEN
  141. };
  142.  
  143. UWORD arrow_data[] = {                 /* mouse pointer = arrow  */
  144.    0x0000, 0x0000,
  145.  
  146.    0x8000, 0x0000,
  147.    0xc000, 0x0000,
  148.    0xe000, 0x0000,
  149.    
  150.    0xf000, 0x0000,
  151.  
  152.    0xe000, 0x0000,
  153.    0x2000, 0x0000,
  154.    0x0000, 0x0000,
  155.    
  156.    0x0000, 0x0000
  157. };
  158.  
  159. int arrow_x_offset = -1;
  160. int arrow_y_offset = 0;
  161. int arrow_size     = sizeof(arrow_data);
  162.  
  163. UWORD cross_data[] = {                 /* mouse pointer = cross */
  164.    0x0000, 0x0000,
  165.    
  166.    0x0400, 0x0000,
  167.    0x0400, 0x0000,
  168.    0x0400, 0x0000,
  169.    0x0400, 0x0000,
  170.    0x0000, 0x0000,
  171.    
  172.    0xf1e0, 0x0000,
  173.  
  174.    0x0000, 0x0000,
  175.    0x0400, 0x0000,
  176.    0x0400, 0x0000,
  177.    0x0400, 0x0000,
  178.    0x0400, 0x0000,
  179.    
  180.    0x0000, 0x0000
  181. };
  182.  
  183. int cross_x_offset = -6;
  184. int cross_y_offset = -1;
  185. int cross_size     = sizeof(cross_data);
  186.  
  187. UWORD waiter_data[] = {                /* mouse pointer = 'wait' */
  188.    0x0000, 0x0000,
  189.    
  190.    0x8800, 0x0000,
  191.    0x8800, 0x0000,
  192.    0xa800, 0x0000,
  193.    0xa800, 0x0000,
  194.    0x5000, 0x0000,
  195.    
  196.    0x0e00, 0x0000,
  197.    0x0100, 0x0000,
  198.    0x0700, 0x0000,
  199.    0x0940, 0x0000,
  200.    0x0700, 0x0000,
  201.    
  202.    0x00c0, 0x0000,
  203.    0x0040, 0x0000,
  204.    0x0040, 0x0000,
  205.    0x0048, 0x0000,
  206.    0x00e8, 0x0000,
  207.    
  208.    0x001c, 0x0000,
  209.    0x0008, 0x0000,
  210.    0x0008, 0x0000,
  211.    0x000a, 0x0000,
  212.    0x0004, 0x0000,
  213.    
  214.    0x0000, 0x0000
  215. };
  216.  
  217. int waiter_x_offset = -1;
  218. int waiter_y_offset = 0;
  219. int waiter_size     = sizeof(waiter_data);
  220.  
  221. UWORD transparent_data[] = {           /* mouse pointer = transparent  */
  222.    0x0000, 0x0000,
  223.  
  224.    0x0000, 0x0000,
  225.    0x0000, 0x0000,
  226.    0x0000, 0x0000,
  227.    
  228.    0x0000, 0x0000
  229. };
  230.  
  231. int transparent_x_offset = 0;
  232. int transparent_y_offset = 0;
  233. int transparent_size     = sizeof(transparent_data);
  234.